﻿#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<cstring>
//using namespace std;
//const int N = 23,INF=0x3f3f3f3f;
//int h[N];
//void init()
//{
//	memset(h, 0x3f, sizeof(h));
//}
//int f(int x)
//{
//	int id = (x % N + N) % N;
//	while (h[id] != INF && h[id] != x)
//	{
//		id++;
//		if (id == N) id = 0;
//	}
//	return id;
//}
//void insert(int x)
//{
//	int id = f(x);
//	h[id] = x;
//}
//bool find(int x)
//{
//	int id = f(x);
//	if (h[id] == x) return true;
//	return false;
//}
//int main()
//{
//
//	init();
//	int n; cin >> n;
//	while (n--)
//	{
//		int op, x; cin >> op >> x;
//		if (op == 1) insert(x);
//		else
//		{
//			if (find(x)) cout << "yes" << endl;
//			else cout << "no" << endl;
// 
//		}
//	}
//	return 0;
//}
//#include<iostream>
//using namespace std;
//const int N = 23;
//int e[N], ne[N], h[N],id;
//int f(int x)
//{
//	return (x % N + N) % N;
//}
//bool find(int x)
//{
//	int idx = f(x);
//	for (int i = h[idx]; i; i = ne[i])
//	{
//		if (e[i] == x) return true;
//	}
//	return false;
//}
//void insert(int x)
//{
//	if (find(x)) return;
//	id++;
//	int idx = f(x);
//	e[id] = x;
//	ne[id] = h[idx];
//	h[idx] = id;
//}
//int main()
//{
//	int n; cin >> n;
//	while (n--)
//	{
//		int op, x; cin >> op >> x;
//		if (op == 1)
//		{
//			insert(x);
//		}
//		else
//		{
//			if (find(x)) cout << "yes" << endl;
//			else cout << "no" << endl;
//		}
//	}
//	return 0;
//}
//#include<iostream>
//#include<unordered_set>
//using namespace std;
//int main()
//{
//	string str[] = { "张三", "李四", "王五", "赵六", "杨", "珂" };
//	unordered_set<string> mp;
//	for (auto& s : str)
//	{
//		mp.insert(s);
//	}
//	if (mp.count("张三")) cout << "yes" << endl;
//	else cout << "no" << endl;
//	mp.erase("张三");
//	if (mp.count("张三")) cout << "yes" << endl;
//	else cout << "no" << endl;
//	for (auto& s : mp)
//	{
//		cout << s << " ";
//	}
//	return 0;
//}
//#include<iostream>
//#include<unordered_map>
//using namespace std;
//unordered_map<string, int> mp;
//int main()
//{
//	int n; cin >> n;
//	while (n--)
//	{
//		int op;
//		string s;
//		int x;
//		cin >> op;
//		if (op == 1)
//		{
//			cin >> s >> x;
//			mp[s] = x;
//			cout << "OK" << endl;
//		}
//		else if (op == 2)
//		{
//			cin >> s;
//			if (mp.count(s)) cout << mp[s] << endl;
//			else cout << "Not found" << endl;
//		}
//		else if (op == 3)
//		{
//			cin >> s;
//			if (mp.count(s))
//			{
//				mp.erase(s);
//				cout << "Deleted successfully" << endl;
//			}
//			else cout << "Not found" << endl;
//		}
//		else
//		{
//			cout << mp.size() << endl;
//		}
//	}
//	return 0;
//}
//#include<iostream>
//#include<unordered_map>
//using namespace std;
//int main()
//{
//	int t; scanf("%d",&t);
//	while (t--)
//	{
//		unordered_map<int, int> mp;
//		int n; scanf("%d",&n);
//		while (n--)
//		{
//			int x; scanf("%d",&x);
//			if (!mp.count(x))
//			{
//				mp[x]++;
//				printf("%d ",x);
//			}
//		}
//		printf("\n");
//	}
//	return 0;
//}
//#include<iostream>
//#include<unordered_map>
//#include<set>
//using namespace std;
//int main()
//{
//	int t; cin >> t;
//	unordered_map<string, set<int>> mp;
//	for (int i = 1; i <= t; i++)
//	{
//		int l; cin >> l;
//		while (l--)
//		{
//			string s; cin >> s;
//			mp[s].insert(i);
//		}
//	}
//	int m; cin >> m;
//	while (m--)
//	{
//		string s; cin >> s;
//		for (auto& e : mp[s])
//		{
//			cout << e << " ";
//		}
//		cout << endl;
//	}
//	return 0;
//}
//#include<iostream>
//#include<unordered_map>
//using namespace std;
//const int N = 2e5 + 10;
//int a[N];
//unordered_map<int, int> mp;
//int main()
//{
//	int n, m; cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//		mp[a[i]]++;
//	}
//	long long ret = 0;
//	for (int i = 1; i <= n; i++)
//	{
//		ret += mp[a[i] + m];
//	}
//	cout << ret << endl;
//}
//#include<iostream>
//#include<unordered_map>
//using namespace std;
//unordered_map<string, int> mp;
//int main()
//{
//	int n; cin >> n;
//	int ret = 0;
//	while (n--)
//	{
//		string a, b;
//		cin >> a >> b;
//		a = a.substr(0, 2);
//		if (a == b) continue;
//		ret += mp[b + a];
//		mp[a + b]++;
//	}
//	cout << ret << endl;
//	return 0;
//}